Для отправки писем через SMTP в PHP будем использовать библиотеку PHPMailer. Для этого ее необходимо скачать:

github.com/PHPMailer/PHPMailer или скачать с кодер.укр.

Распаковать архив в папку с расширениями (дополнениями).

Или установить с помощью composer:

composer require phpmailer/phpmailer

И приступаем к использованию.

Минимальный код для отправки писем с помощью SMTP

Использование библиотеки довольно простое, для примера отправим письмо с яндекс почты через SMTP:

<?php

require 'PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();
$mail->Host = 'smtp.yandex.ru';
$mail->SMTPAuth = true;
$mail->Username = 'robot@devreadwrite.com';    //Логин
$mail->Password = '*******';                   //Пароль
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;

$mail->setFrom('robot@devreadwrite.com', 'Robot');
$mail->isHTML(true);

$mail->Subject = 'Тема письма';
$mail->Body    = '<b>HTML</b> версия письма';
$mail->AltBody = 'Текстовая версия письма, без HTML тегов (для клиентов не поддерживающих HTML)';

//Отправка сообщения
if(!$mail->send()) {
    echo 'Ошибка при отправке. Ошибка: ' . $mail->ErrorInfo;
} else {
    echo 'Сообщение успешно отправлено';
}

Этого минимального кода хватит для 90% задач по отправке писем.

Подробный пример отправки писем через SMTP

<?php

require 'PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

//Дебаг
//0 = off (for production use)
//1 = клиентские сообщения
//2 = серверные и клиентские сообщения
//$mail->SMTPDebug = 2;

$mail->isSMTP();
$mail->Host = 'smtp.yandex.ru'; //gmail: smtp.gmail.com
$mail->SMTPAuth = true;
$mail->Username = 'robot@devreadwrite.com';
$mail->Password = '*******';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setLanguage('ru');
$mail->setFrom('robot@devreadwrite.com', 'Robot');
$mail->addAddress('my.friend@gmail.com', 'My Friend');    //Получатель
//$mail->addAddress('my.friend2@gmail.com');              //Еще получатель
//$mail->addReplyTo('my.friend3@gmail.com', 'My Friend 3');
//$mail->addCC('my.friend.cc@example.com');               //Копия
//$mail->addBCC('my.friend.bcc@example.com');             //Скрытая копия

//$mail->addAttachment('/path/to/file.zip');              //Прикрепить файл
//$mail->addAttachment('/path/to/image.jpg', 'new.jpg');  //Прикрепить файл + задать имя
$mail->isHTML(true);

$mail->Subject = 'Тема письма';
$mail->Body    = '<b>HTML</b> версия письма';
$mail->AltBody = 'Текстовая версия письма, без HTML тегов (для клиентов не поддерживающих HTML)';

//Отправка сообщения
if(!$mail->send()) {
    echo 'Ошибка при отправке. Ошибка: ' . $mail->ErrorInfo;
} else {
    echo 'Сообщение успешно отправлено';
}

Дополнительная документация: https://github.com/PHPMailer/PHPMailer/wiki.

Приятного использования.